/*
 * @Author: 小封 258234579@qq.com
 * @Date: 2022-07-08 15:34:29
 * @LastEditors: 小封 258234579@qq.com
 * @LastEditTime: 2022-07-08 18:48:10
 * @FilePath: \三花机联网\src\utils\download.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import request from '@/utils/request'
import { Message } from 'element-ui'
import { saveAs } from 'file-saver'

import { blobValidate } from "@/utils/ruoyi";

const baseURL = process.env.VUE_APP_BASE_XSAPI

export default {
  name(name, isDelete = true) {
    var url = baseURL + "/common/download?fileName=" + encodeURI(name) + "&delete=" + isDelete
    axios({
      method: 'get',
      url: url,
      responseType: 'blob',
     
    }).then(async (res) => {
      const isLogin = await blobValidate(res.data);
      if (isLogin) {
        const blob = new Blob([res.data])
        this.saveAs(blob, decodeURI(res.headers['download-filename']))
      } else {
        this.printErrMsg(res.data);
      }
    })
  },
  resource(resource) {
    var url = baseURL + "/common/download/resource?resource=" + encodeURI(resource);
    axios({
      method: 'get',
      url: url,
      responseType: 'blob',
      
    }).then(async (res) => {
      const isLogin = await blobValidate(res.data);
      if (isLogin) {
        const blob = new Blob([res.data])
        this.saveAs(blob, decodeURI(res.headers['download-filename']))
      } else {
        this.printErrMsg(res.data);
      }
    })
  },
  zip(url, name) {
    // var url = baseURL + url
    request({
      method: 'get',
      url: url,
      responseType: 'blob',

    }).then(async (res) => {
      const isLogin = await blobValidate(res.data);
      if (isLogin) {
        const blob = new Blob([res.data], { type: 'application/zip' })
        this.saveAs(blob, name)
      } else {
        this.printErrMsg(res.data);
      }
    })
  },
  saveAs(text, name, opts) {
    saveAs(text, name, opts);
  },
  async printErrMsg(data) {
    const resText = await data.text();
    const rspObj = JSON.parse(resText);

    Message.error(errMsg);
  }
}

// class download {
//   constructor(urls) {
//     //所有的url以及文件名
//     this.urls = urls
//     //全部队列
//     this.allQueue = []
//     //成功文件
//     this.successFiles = []
//     //失败文件
//     this.errorFiles = []
//   }
//   //下载文件并转化为blob
//   fetchFileAsBlob(url, filename) {
//     console.log(url);
//     if (!url) {
//       this.errorFiles.push(filename)
//       return
//     }
//     return new Promise((resolve) => {
//       fetch(url, {
//         mode: 'cors',
//       })
//         .then((res) => {
//           console.log(res);
//           if (res.status == 200) {
//             // res返回的是字节流
//             res
//               .blob()
//               .then((blob) => {
//                 // 使用blob()方法返回一个被解析为Blob格式的Promise对象
//                 const blobUrl = window.URL.createObjectURL(blob) // 使用URL.createObjectURL 生成一个blob协议的URL，大多数场景下可以将其当做http协议的url来使用
//                 this.successFiles.push({
//                   url: blobUrl,
//                   name: decodeURIComponent(filename),
//                 })
//                 resolve()
//               })
//               .catch(() => {
//                 resolve()
//                 this.errorFiles.push(filename)
//               })
//           } else {
//             resolve()
//             this.errorFiles.push(filename)
//           }
//         })
//         .catch(() => {
//           resolve()
//           this.errorFiles.push(filename)
//         })
//     })
//   }
//   //统一将blob文件下载并返回错误文件
//   downloadAllFils(cb) {
//     Promise.all(this.allQueue).then(() => {
//       cb(this.errorFiles)
//       console.log(this.successFiles);
//       this.successFiles.forEach((item) => {
//         const a = document.createElement('a') // 创建一个a标签
//         a.style.display = 'none'
//         a.href = item.url
//         a.download = decodeURIComponent(item.name) // 对编码后的 URI 进行解码
//         document.body.appendChild(a)
//         a.click()
//         document.body.removeChild(a)
//         window.URL.revokeObjectURL(item.url) // 当不结束使用某个 URL 对象之后，应该通过调用这个方法来让浏览器知道不用在内存中继续保留对这个文件的引用了
//       })
//     })
//   }
//   download(cb) {
//     console.log(this.urls);
//     this.urls.forEach((item) => {
//       this.allQueue.push(this.fetchFileAsBlob(item.url, item.filename))
//     })
//     this.downloadAllFils((errors) => {
//       cb(errors)
//     })
//   }
// }
// export default download 
